package com.probox.common.entity.mapper.centre;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.probox.common.entity.domain.centre.ProductCount;
import com.probox.common.entity.vo.centre.customer.CustomerQueryVo;
import com.probox.common.entity.vo.centre.order.OrderQueryVo;
import com.probox.common.entity.vo.centre.product.ProductDataVo;
import com.probox.common.entity.vo.centre.product.ProductInfoQuery;
import com.probox.common.entity.vo.centre.product.SelectProductInfo;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.HashMap;
import java.util.List;

/**
 * 商品数据汇总Mapper接口
 *
 *
 * @date 2021-06-08
 */
@Mapper
public interface CentreProductCountMapper extends BaseMapper<ProductCount> {

    /**
     * 查询商品总数据总数据
     *
     * @param platformId 平台Id
     * @return
     */
    ProductDataVo selectProductData(@Param("platformId") Long platformId, @Param("supplierId") Long supplierId);


    /**
     * 查询总支付转行率
     * @param platformId

     * @param startTime
     * @param endTime
     * @return
     */
    Double selectPaymentConversionRateSum(@Param("platformId") Long platformId, @Param("startTime") String startTime, @Param("endTime") String endTime);


    /**
     * 查询总复购率
     * @param platformId

     * @param startTime
     * @param endTime
     * @return
     */
    Double selectProductRepurchaseRateSum(@Param("platformId") Long platformId, @Param("startTime") String startTime, @Param("endTime") String endTime);


    /**
     * 查询第二次支付人数
     * @param platformId

     * @param startTime
     * @param endTime
     * @return
     */
    List<HashMap> selectProductRepurchaseClient(@Param("platformId") Long platformId, @Param("startTime") String startTime, @Param("endTime") String endTime);

    /**
     * 查询总支付人数
     * @param platformId

     * @param startTime
     * @param endTime
     * @return
     */
    List<HashMap> selectPayClient(@Param("platformId") Long platformId, @Param("startTime") String startTime, @Param("endTime") String endTime);


    /**
     * 查询支付转化率
     * @param platformId

     * @param startTime
     * @param endTime
     * @return
     */
    List<HashMap> getPaymentConversionRateSum(@Param("platformId") Long platformId, @Param("startTime") String startTime, @Param("endTime") String endTime);


    /**
     * 查询商品历史数据
     *
     * @param platformId 平台Id
     * @param startTime 开始日期
     * @param endTime 结束日期
     * @return
     */
     List<HashMap> selectTodayProductData(@Param("platformId") Long platformId, @Param("startTime") String startTime, @Param("endTime") String endTime);

    /**
     * 查询访客数量
     * @param platformId 平台Id
     * @param startTime 开始日期
     * @param endTime 结束日期
     * @return
     */
    Integer selectProductVisitorsData(@Param("platformId") Long platformId, @Param("startTime") String startTime, @Param("endTime") String endTime);

    /**
     * 会员访客数量
     * @return
     */
    Integer selectMemberVisitorsData(@Param("customerQueryVo")CustomerQueryVo customerQueryVo);
    /**
     * 查询图表数据
     * @param platformId

     * @param startTime
     * @param endTime
     * @return
     */
    List<HashMap> selectMapData(@Param("type")String type ,@Param("platformId") Long platformId, @Param("startTime") String startTime, @Param("endTime") String endTime);

    /**
     * 查询访客数量
     * @param platformId 平台Id
     * @param startTime 开始日期
     * @param endTime 结束日期
     * @return
     */
    List<HashMap> selectVisitorsMapData(@Param("platformId") Long platformId, @Param("startTime") String startTime, @Param("endTime") String endTime);

    /**
     * 查询商品详细信息
     * @param productInfoQuery
     * @param platformId

     * @return
     */
    List<ProductDataVo> selectProductQueryList(@Param("productInfoQuery") ProductInfoQuery productInfoQuery, @Param("platformId") Long platformId);

    /**
     * 查询浏览量前十排行榜
     * @return
     */
    List<ProductDataVo> selectRanking(@Param("productInfoQuery") SelectProductInfo productInfoQuery, @Param("platformId") Long platformId);


    /**
     * 查询商品预警数量
     * @param orderQueryVo
     * @return
     */
    Integer selectProductWarningData(OrderQueryVo orderQueryVo);

//    /**
//     * 查询加会员数量
//     * @param customerQueryVo
//     * @return
//     */
//    Integer selectMemberAddCarData(@Param("customerQueryVo")CustomerQueryVo customerQueryVo);

    /**
     * 查询会员行为（加购、浏览量、收藏、、  数量）
     * @param customerQueryVo
     * @param type
     * @return
     */
    Integer selectMemberData(@Param("customerQueryVo")CustomerQueryVo customerQueryVo,@Param("type") String type);


    /**
     * 查询商品总数量
     * @param platformId
     * @return
     */
    Integer selectProductTotal( @Param("platformId") Long platformId);
}
